package com.healthcloud.dao.accompany;

import com.healthcloud.dao.BaseDao;
import com.healthcloud.entity.accompany.AccompanyBlNoMedicalEntity;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 骨松随访-没有用药-区分首次、6、12、18、24个月 数据层
 *
 * @author liujx
 * @date 2020-08-03
 */
@Repository
public interface AccompanyBlNoMedicalDao extends BaseDao<AccompanyBlNoMedicalEntity> {
    /**
     * 查询骨松随访-没有用药-区分首次、6、12、18、24个月信息
     *
     * @param id 骨松随访-没有用药-区分首次、6、12、18、24个月ID
     * @return 骨松随访-没有用药-区分首次、6、12、18、24个月信息
     */
    AccompanyBlNoMedicalEntity selectAccompanyBlNoMedicalById(Long id);

    /**
     * 查询骨松随访-没有用药-区分首次、6、12、18、24个月信息
     */
    AccompanyBlNoMedicalEntity queryByAccompanyBlId(Long accompanyBlId);

    /**
     * 根据 accompany_bl_id 列表，逻辑删除无药物骨松随访
     */
    int batchRemoveByAccompanyBlIds(@Param("accompanyBlIds") Long[] accompanyBlIds);

    /**
     * 查询骨松随访-没有用药-区分首次、6、12、18、24个月列表
     *
     * @param accompanyBlNoMedical 骨松随访-没有用药-区分首次、6、12、18、24个月信息
     * @return 骨松随访-没有用药-区分首次、6、12、18、24个月集合
     */
    List<AccompanyBlNoMedicalEntity> selectAccompanyBlNoMedicalList(AccompanyBlNoMedicalEntity accompanyBlNoMedical);

    /**
     * 修改骨松随访-没有用药-区分首次、6、12、18、24个月
     *
     * @param accompanyBlNoMedical 骨松随访-没有用药-区分首次、6、12、18、24个月信息
     * @return 结果
     */
    int updateAccompanyBlNoMedical(AccompanyBlNoMedicalEntity accompanyBlNoMedical);

    /**
     * 删除骨松随访-没有用药-区分首次、6、12、18、24个月
     *
     * @param id 骨松随访-没有用药-区分首次、6、12、18、24个月ID
     * @return 结果
     */
    int deleteAccompanyBlNoMedicalById(Integer id);

    /**
     * 批量删除骨松随访-没有用药-区分首次、6、12、18、24个月
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    int deleteAccompanyBlNoMedicalByIds(String[] ids);

    /**
     * 根据患者手机号，来查询对应的身份证号。
     *
     * @param patientPhone 患者手机号
     * @return
     */
    List<String> listByPatientPhone(
            @Param("patientPhone") String patientPhone,
            @Param("hospitalId") Long hospitalId
    );

    List<Long> getAccompanyBLId(@Param("entity") AccompanyBlNoMedicalEntity entity);

    /**
     * 根据患者身份证号、医院id、随访类型，逻辑删除以前的随访记录
     */
    void removeAccompanyData(@Param("entity") AccompanyBlNoMedicalEntity entity);

    /**
     * 修改病人身份证号
     * @param oldIdCard 修改前身份证号
     * @param newIdCard 修改后身份证号
     */
    void updateIdCard(@Param("newIdCard") String newIdCard, @Param("oldIdCard") String oldIdCard);
}